<?php
/**
 *订单项
 */
class SinaOrderItem{
	/**
	 * @var integer $ProductID 新浪商城商品ID
	 */
	var $ProductID;
	/**
	 * @var string  $ProductCode 商户商品ID  数据类型：varchar(50)
	 */	
	var $ProductCode;
	/**
	 * @var integer $Quantity 商品数量
	 */		
	var $Quantity;
	/**
	 * @var double $PaySum 合计金额，保留两位小数  数据类型：numeric(8,2)
	 */		
	var $PaySum;
	/**
	 * @var double $TradePrice 市场价，保留两位小数  数据类型：numeric(8,2)
	 */		
	var $TradePrice;
	/**
	 * @var double $OriginPrice 商户价  数据类型：numeric(8,2)
	 */		
	var $OriginPrice;
	/**
	 * @var double $PromotionPrice 促销价,建议价  数据类型：numeric(8,2)
	 */		
	var $PromotionPrice;
	/**
	 * @var string $attachcode 商品定制ID[已过时]，主要针对定制商品  数据类型：varchar(60)
	 */		
	var $attachcode;
	/**
	 * @var string 商品属性信息[已过时]，如服装的尺寸颜色  数据类型：varchar(60)
	 */		
	var $typecode;	
	/**
	 * @var string 商品附加信息  数据类型：varchar(500)
	 */		
	var $extentinfo;
	/**
	 * @var string 商品报价信息，如颜色、尺码
	 */	
	var $priceinfo;
	/**
	 * @var string $priceProductCode 多属性报价的商品编码
	 */
    var $priceProductCode;
}
/**
 *订单
 */
class SinaOrder{
	/**
	 * @var integer $OrderID 新浪商城订单号
	 */		
	var $OrderID;	
	/**
	 * @var integer $MerchantID 新浪商城商户号
	 */		
	var $MerchantID;	
	/**
	 * @var integer $ECUserID 商城用户ID，-1为匿名用户
	 */		
	var $ECUserID;
	/**
	 * @var double $PaySum 总金额 numeric(10,2)
	 */		
	var $PaySum;	
	/**
	 * @var double $ProductFee 商品总计  numeric(10,2)
	 */		
	var $ProductFee;	
	/**
	 * @var double $ShipFee 配送费用 numeric(10,2)
	 */		
	var $ShipFee;	
	/**
	 * @var double $PackageFee 包装费用 numeric(10,2)
	 */		
	var $PackageFee;		
	/**
	 * @var string $Country 国家  数据类型：nvarchar(30)
	 */		
	var $Country;		
	/**
	 * @var string $Province 省（直辖市）数据类型：nvarchar(30)
	 */		
	var $Province;	
	/**
	 * @var string $City 市（区）  数据类型：nvarchar(30)
	 */		
	var $City;		
	/**
	 * @var string $County 县  数据类型：nvarchar(30)
	 */		
	var $County;	
	/**
	 * @var string $ShipToName 收货人姓名  数据类型：varchar(50)
	 */			
	var $ShipToName;
	/**
	 * @var string $Address 收货人地址 数据类型：varchar(200)
	 */		
	var $Address;		
	/**
	 * @var string $PostalCode 收货人邮编 数据类型：varchar(10)
	 */		
	var $PostalCode;		
	/**
	 * @var string $Telephone 收货人电话  数据类型：varchar(50)
	 */		
	var $Telephone;		
	/**
	 * @var string $Email 收货人邮件 数据类型：varchar(50)
	 */		
	var $Email;		
	/**
	 * @var boolean $isNeedInvoice 是否需要发票：true不需要，false需要
	 */		
	var $isNeedInvoice;		
	/**
	 * @var string $InvoiceTitle 发票title  数据类型：nvarchar(200)
	 */		
	var $InvoiceTitle;	
	/**
	 * @var string $InvoiceType 发票类型（暂时不用）
	 */		
	var $InvoiceType;	
	/**
	 * @var string $UserNotes 用户标注  数据类型：nvarchar(500)
	 */		
	var $UserNotes;		
	/**
	 * @var string $Description 订单标注
	 */		
	var $Description;
	/**
	 * @var string $UpdateTime 生成时间，如2010-7-8 18:45:41
	 */		
	var $UpdateTime;	
	/**
	 * @var integer $Status 订单状态，如1
	 */		
	var $Status;		
	/**
	 * @var integer $isPaid 支付状态，如0
	 */		
	var $isPaid;	
	/**
	 * @var integer $isDeleted 作废状态，如0
	 */		
	var $isDeleted;	
	/**
	 * @var string $ShipMethodType 配送方式，如 送货上门(快递)
	 */		
	var $ShipMethodType;	
	/**
	 * @var string $ShipMethodTypeName 配送方式 , 数据类型：varchar(20)
	 * <br/>取值内容：送货上门(快递)、平邮、加急配送、特快专递(EMS)、上门自提
	 */		
	var $ShipMethodTypeName;
	/**
	 * @var string $PaymentName 支付方式 ,数据类型：varchar(20)
	 * <br/>取值内容：安全支付、网上支付、货到付款、邮局汇款、银行电汇、新付通
	 */		
	var $PaymentName;	
	/**
	 * @var string $ShopID 分店ID 没有分店为0，数据类型：int,这个一般针对总分店用户是采用，一般商户可以不必关注
	 */		
	var $ShopID;	
	/**
	 * @var string $sendername 购买人姓名  数据类型：varchar(50)
	 */		
	var $sendername;	
	/**
	 * @var string $senderaddress 购买人地址  数据类型：varchar(200)
	 */		
	var $senderaddress;		
	/**
	 * @var string $senderpostalcode 购买人邮编   数据类型：varchar(10)
	 */		
	var $senderpostalcode;	
	/**
	 * @var string $senderphonenumber 购买人电话  数据类型：varchar(50)
	 */		
	var $senderphonenumber;	
	/**
	 * @var string $senderemail 购买人邮件  数据类型：varchar(50)
	 */		
	var $senderemail;			
	/**
	 * @var string $delivertime 送货时间:日期格式  数据类型：smalldatetime
	 */		
	var $delivertime;	
	/**
	 * @var string $deliverperiod 送货时段：字符串描述  数据类型：varchar(100)
	 */		
	var $deliverperiod;	
	/**
	 * @var string $congratulation 祝福语  数据类型：varchar(200)
	 */		
	var $congratulation;		
	/**
	 * @var integer $isanonymity 是否匿名：1匿名，0实名
	 */		
	var $isanonymity;	
	/**
	 * @var string $voucherSerial 商品优惠券号码  数据类型：varchar(50)
	 */		
	var $voucherSerial;		
	/**
	 * @var double $voucherFee 优惠额度  数据类型：numeric(8,2)
	 */		
	var $voucherFee;
	/**
	 * @var array $orderitem 订单项列表，类型@see SinaOrderItem
	 */	
	var $orderitem=array();
    /**
	 * @var array $_DataLayerout 数据布局(系统属性)，varclass：本类中property是对象或对象数组的类及子类class
	 */
    public static  $_DataLayerout=array('varclass'=>array('orderitem'=>'SinaOrderItem'));	 	
}
/**
 *订单列表项
 */
class SinaOrderListItem{
	/**
	 * @var intger $orderid 订单号
	 */		
	var $orderid;	
	/**
	 * @var string $merchantid 商户号
	 */		
	var $merchantid;	
	/**
	 * @var double $paysum 总金额
	 */		
	var $paysum;
	/**
	 * @var integer $isdeleted 作废状态
	 */		
	var $isdeleted;	
	/**
	 * @var integer $ispaid 支付状态
	 */		
	var $ispaid;	
	/**
	 * @var integer $status 订单状态
	 */		
	var $status;	
	/**
	 * @var string $merchantorderid 
	 */		
	var $merchantorderid;					
}
//private 订单列表
class _SinaOrderList{
	/**
	 * @var array $order 订单项列表，类型@see SinaOrderItem
	 */	
	var $order=array();
    /**
	 * @var array $_DataLayerout 数据布局(系统属性)，varclass：本类中property是对象或对象数组的类及子类class
	 */
    public static  $_DataLayerout=array('varclass'=>array('order'=>'SinaOrderListItem'));	 	
	
}

class SinaProductBaseinfo{
	/**
	 * @var string $productname 商品名称（必填，不能重复，名称重复系统执行更新）
	 */
	var $productname;
	/**
	 * @var string $productcode 商品编码  您自己给此商品一个编号，便于查找此商品
	 */
	var $productcode;	
	/**
	 * @var string $cfid 所属分类  为商品所属的最终分类，此分类id由新浪商城提供，商户对照分类映射填写,
	 * 参照“商品分类表”，填写分类编号（必填）
	 */
	var $cfid;	
	/**
	 * @var double $merchantprice 商品新浪价  必须大于零（必填）
	 */
	var $merchantprice;	
	/**
	 * @var double $tradeprice 商品市场价  此商品在市场上售价（必填）
	 */
	var $tradeprice;		
	/**
	 * @var integer $totalstocks 商品库存  总和必须为大于0的正整数（必填）
	 */
	var $totalstocks;	
	/**
	 * @var integer $isselling 上下架状态：0：下架 1上架
	 */
	var $isselling;	
	/**
	 * @var integer $overweight 是否超重，
	 * 针对发货时对超重商品会有不同的配送费用， 0：不超重  1：超重
	 */
	var $overweight;			
	/**
	 * @var string $keywords 商品关键字，合理关键词有助于用户搜索
	 */
	var $keywords;	
	/**
	 * @var string $description 商品描述，填写商品描述有助于用户了解此商品，
	 * 存在HTML标签请用<![CDATA[]]>标注，否者不能提交
	 */
	var $description;
	/**
	 * @var string $favourableinfo 商品促销信息，2000字符以内
	 */
	var $favourableinfo;
	/**
	 * @var string $manufacturer 制造商
	 */
	var $manufacturer;			
	/**
	 * @var string $brand 品牌名称
	 */
	var $brand;		
	/**
	 * @var string $showtips 商品提示信息
	 */
	var $showtips;	
	/**
	 * @var string $imageurl 商品图片的全路径的url地址
	 */
	var $imageurl;	
}
/**
 * 特殊属性 请参照“商品分类表”填写，属性值直接填写自定义名称
 */
class SinaProductParameter{
	/**
	 * @var string $id 新浪商城提供的商品特殊属性id
	 */
	var $id;
	/**
	 * @var string $value 特殊属性值
	 */
	var $value;	
}
/**
 * 报价属性  请参照“商品分类表”填写
 * <br/>标签'属性一值'是系统配置属性值，用于系统与自定义对应使用
 * <br/>标签'编辑后属性一值’是用户编辑的的自定义属性用于前台显示,系统对应'属性一值'进行管理
 * <br/>属性请根据后台‘商品管理->分类属性查询’严格按商品分类支持报价属性添加,原属性与自定义属性用‘|’分开
 */
class SinaProductPriceParameter{
	/**
	 * @var double $price 销售价格(必须为数字类型值,不能小于等于零)
	 */
	var $price;
	/**
	 * @var integer $stocks 库存(必须为正整数,不填写默认为'0')
	 */
	var $stocks;	
	/**
	 * @var string $merchantcode 商品编码(只能是数字、字母、横线和下划线，商品编码不能为汉字)
	 */
	var $merchantcode;	
	/**
	 * @var string $prop1  属性一值|编辑后属性一值
	 */	
	var $prop1;
	/**
	 * @var string $prop2  属性二值|编辑后属性二值
	 */		
	var $prop2;
	/**
	 * @var string $prop3  属性三值|编辑后属性三值
	 */		
	var $prop3;
	/**
	 * @var string $prop4  属性四值|编辑后属性四值
	 */		
	var $prop4;
}
/**
 *商品信息，用于得到SinaRuntime中SaveProductInfo要求的参数
 */
class SinaProduct{
	/**
	 * @var SinaProductBaseinfo $baseinfo 商品基本信息
	 */
	var $baseinfo;
	/**
	 * @var array $parameters 特殊属性，类型@see SinaProductParameter
	 */
	var $parameters=array();	
	/**
	 * @var array $priceParameters 报价属性，类型@see SinaProductPriceParameter
	 */
	var $priceParameters=array();	
	/**
	 * 得到xml字符串
	 * @return string 返回xml字符串
	 */
	function toXmlString(){
		$result='<?xml version="1.0" encoding="utf-8" ?><product>';
		$baseinfo=get_object_vars($this->baseinfo);
		$result .='<baseinfo>';
		foreach ($baseinfo as $key=>$val){
			if(('description'==$key || 'favourableinfo'==$key) && isset($val))
			  $result .='<' . $key . '><![CDATA[' . $val .']]></' . $key . '>';	
			else
		      $result .='<' . $key . '>' . $val .'</' . $key . '>';	
		}
		$result .='</baseinfo>';
		$baseinfo=NULL;
		
		$result .='<parameters>';
		for($i=0;$i<count($this->parameters);$i++){
		  $arr=get_object_vars($this->parameters[$i]);
		  $result .='<parameter ';
		  foreach ($arr as $key=>$val){
		      $result .=' ' . $key . '="' . $val .'"';	
		  }
		  $result .='></parameter>';
		}
		$result .='</parameters>';	

		$result .='<priceParameters>';
		for($i=0;$i<count($this->priceParameters);$i++){
		  $arr=get_object_vars($this->priceParameters[$i]);
		  $result .='<parameter ';
		  foreach ($arr as $key=>$val){
		      $result .=' ' . $key . '="' . $val .'"';	
		  }
		  $result .='></parameter>';
		}
		$result .='</priceParameters>';	
				
		$result .='</product>';
		return $result;
	}
}
